package main

import (
	"log"
	"obsidian-plugin-server/config"
	"obsidian-plugin-server/database"
	"obsidian-plugin-server/routes"

	"github.com/gin-gonic/gin"
)

func main() {
	// 加载基础配置
	baseCfg := config.Load()

	// 初始化数据库
	db, err := database.InitDB(baseCfg)
	if err != nil {
		log.Fatal("Failed to connect to database:", err)
	}

	// 自动迁移数据库表
	if err := database.AutoMigrate(db); err != nil {
		log.Fatal("Failed to migrate database:", err)
	}

	// 从数据库加载完整配置（包含 JWT Secret）
	cfg, err := config.LoadWithDB(db)
	if err != nil {
		log.Fatal("Failed to load configuration from database:", err)
	}

	// 设置 Gin 模式
	if cfg.App.Debug {
		gin.SetMode(gin.DebugMode)
	} else {
		gin.SetMode(gin.ReleaseMode)
	}

	// 创建 Gin 路由
	router := gin.Default()

	// 设置路由
	routes.SetupRoutes(router, db, cfg)

	// 启动服务器
	log.Printf("Server starting on %s", cfg.App.Port)
	if err := router.Run(cfg.App.Port); err != nil {
		log.Fatal("Failed to start server:", err)
	}
}
